It is common for computer bus systems to allow pipelining of multiple bus transactions. Pipelining occurs when subsequent transaction requests are made prior to the completion of outstanding transaction requests. Bus transactions may be requested for one transaction while data transfer is performed concurrently for a separate bus transaction. In this manner, multiple transactions can be processed in parallel with different phases of the separate bus transactions performed concurrently.
Power consumption is an important issue for computer systems and integrated systems-on-a-chips (SOC's). In some applications, low power consumption may be more important and desirable than high performance, such as in battery-powered cellphone or personal digital assistant (PDA) applications. Therefore, it is acceptable to provide a means to select a reduction in processing capability where a corresponding reduction in power consumption is obtained. For example, it may be preferable to reduce transaction processing capability as a trade-off for a reduction in power consumption. This can be accomplished by varying the depth of the bus pipeline, wherein a shorter bus pipeline would decrease processing capability, slow the system and reduce power consumption by spreading the bus transaction requests over a longer period of time, effectively reducing the number of transfer requests per unit of time. A reduction in the number of transfer requests per unit of time results in reductions in the power consumptions of the devices receiving such requests.
It is desirable to provide a bus mechanism to allow the depth of the bus pipeline to be varied in accordance with power consumption constraints or particular processing constraints of the agents connected to the bus. One proposed solution is taught by U.S. Pat. No. 5,548,733 to Sarangdhar et al., entitled “METHOD AND APPARATUS FOR DYNAMICALLY CONTROLLING THE CURRENT MAXIMUM DEPTH OF A PIPELINED COMPUTER BUS SYSTEM.” Individual bus agents transmit signals to the central arbiter, which responsively controls the depth of the pipeline in accordance with the signals received from each of the various bus agents. Thus, one slave device effectively sets a common lowest-common denominator master pipeline depth for all slaves.
However, non-optimal results are obtained where each of the devices or agents connected to the bus is not capable of accommodating the maximum depth of the bus pipeline. For example, if one particular agent is only capable of accommodating a pipeline having a depth of two, then, even though other agents can pipeline deeper, this capability is never utilized. Therefore, the effective maximum depth for a bus pipeline is constrained by the agent that can accommodate only the shallowest bus pipeline depth.
Moreover, the bus depth to which any particular agent is capable of accommodating may depend on the particular hardware of the bus agent or it may depend upon the current state of the bus agent. For example, during start-up or initialization of an agent, the agent may not be capable of processing any bus transactions, whereas once the agent has been fully activated, the agent may be capable of accommodating a bus pipeline depth of five. In other cases, the maximum depth to which an agent can process bus requests is a dynamic function of the current state of input and output queues connected to the bus. For example, if the input queue of a bus agent is empty, the agent may be capable of accommodating a pipeline depth of five. However, if the queue of the bus agent is full or nearly full, the agent may only be capable of accommodating a bus pipeline depth of one or two.
What is needed is a system and method that allows a request pipeline depth setting such that not all masters and cache snooping devices in a system are bound to the least common denominator of all receiving devices. What is also needed is a dynamic adjustment means of pipeline depth setting, wherein the pipeline depth setting can be increased or decreased responsive to the capabilities of the system devices, processing capability and power consumption requirements.